package com.azdebugit.suanfa.test.niu;

public class niudundiedai {
    public static double sqt(double c){
        if(c<0){
            return Double.NaN;
        }
        double err=1e-15;
        double t=c;//t代表参数c的平方根,先随便给t一个初始值c
        int count=0;//count没任何用,就是用来看计算过程的
        while(Math.abs(t-c/t)>err*t){//由于只是无限接近真正的平方根,所以比较c的估算平方根t,t的平方和初始c的差距,要小于指定误差,并计算次数

            t=(c/t+t)/2.0;//x2=(x1+c/x1)/2,不断计算x值,接近真是的值
            count++;//计算的次数
            System.out.print("第"+count+"次计算");
            System.out.println(t);//每次计算的值,越来越接近了!
        }
        return t;
    }
    public static void main(String[] args) {
        double sqt = sqt(102);
        System.out.println("符合误差的最终值");
        System.out.println(sqt);
    }
}
